package com.java.simple.study.jvm.memstruct.methodarea;

/**
 * @author zhoujunlin
 * @date 2021/12/12
 * @desc intern方法演示
 **/
public class Demo3_2_3 {

    public static void main(String[] args) {
//        test1();
        test2();
    }

    public static void test1() {
        String s = new String("a") + new String("b"); // 两个字符串变量拼接   StringBuilder
        // StringTable ["a", "b"]
        // heap  new String("a")  new String("b")  new String("ab");
        String s2 = s.intern(); // 将字符串常量尝试放入串池，串池有不放入，没有放入串池。 结果返回串池中的对象
        System.out.println(s == s2);  // true
        System.out.println(s == "ab"); //true
    }

    public static void test2() {
        String x = "ab";
        String s = new String("a") + new String("b"); // 两个字符串变量拼接   StringBuilder
        // StringTable ["ab", "a", "b"]
        // heap  new String("a")  new String("b")  new String("ab");
        String s2 = s.intern(); // 将字符串常量尝试放入串池，串池有不放入，没有放入串池。 结果返回串池中的对象
        System.out.println(s == s2);  // false
        System.out.println(s == "ab"); // false
        System.out.println(s == x);  //false
        System.out.println(s2 == x); //true
    }
}
